IAM Access Analyzer でパブリックアクセスされたS3を確認してみた。 #reinvent
こんにちは。芳賀健です。
みなさん、IAMロールやS3のアクセス経路をどのように管理していますか? 今回のre:InventでIAM Access Analyzerという機能がリリースされたので試してみました。
試したこと
- IAM Access Analyzerの有効化
- 外部プリンシパルからのアクセス確認
- リージョンの違うS3バケットの確認
- S3のパブリックアクセスを解除してから再スキャン
1. IAM Access Analyzerの有効化
まずは、IAM Access Analyzerを有効化しましょう。 IAM のマネージメントコンソールのメニューに「アクセスアナライザー」があります。
「アクセスアナライザー」で アナライザーを作成
をクリックします。
「アナライザーを作成」の画面で設定を確認し、アナライザーを作成
をクリックします。
のちほど説明しますが、注意点として「アクセスアナライザー」は、各リージョンでチェックされる点です。
「Access Analyzer」の画面でスキャンが完了すると、画面へメッセージが表示されます。 AWSリソースの数によってスキャンの時間が変わります。
2. 外部プリンシパルからのアクセス確認
「Access Analyzer」の画面で外部からのアクセスされるAWSリソースの一覧が表示されます。
スキャンされるAWSリソースは、S3バケット/IAMロール/SQSキューなどです。
また、結果ID
をクリックする事で検知された詳細を見る事ができます。
「Access Analyzerの詳細」では対象のAWSリソースへどのようなアクセス権限が設定されているかを確認することができます。また、その設定が意図したものであれば アーカイブ
することで結果から削除でき、意図せず間違ったものである場合、 対象のAWSリソースを編集するコンソールへ移動することができます。
3. リージョンの違うS3バケットの確認
IAM Access Analyzerは、AWSリソースを利用している各リージョンで有効化する必要があります。 そのため、S3バケットなどを幾つかのリージョンで作成している場合には、利用しているリージョンで有効化しましょう。 上記の 1.~2.まで説明に利用してきたリージョンはap-northeast-1(東京)でしたが、us-west-2(オレゴン)へ配置したS3バケットは検知されませんでした。検知するには当該リージョンで有効化が必要です。(大事なので繰り返しお伝えしました)
4. S3のパブリックアクセスを解除してから再スキャン
「Access Analyzerの詳細」で検知されたAWSリソースを編集し、再スキャンしてみましょう。
ここでは、S3バケットへ外部プリンシパルとして、すべてのプリンシパルからアクセスできる状態になっているため、この状態を変更します。
まず、次のへページに移動します
をクリックします。
S3のマネージメントコンソールへ遷移しますので、アクセス権限のページを開きます。
アクセス権限のページパブリックアクセスの設定を変更します。
「Access Analyzerの詳細」のページに戻り、 再スキャン
をクリックします。
対象のAWSリソースが再スキャンされ、ステータスが 解決済み
となりました。
「Access Analyzer」のAWSリソース一覧の画面では 解決済み
ページへ対象リソースが表示されます。
さいごに
AWSのリソースは、簡単に公開設定やアクセス権限を与える事ができてしまいます。そのため、開発やテストでおこなった設定が残っていたり、誤って設定する事があると思います。また、それらを調べるには、AWSサービスを個々に見る必要がありました。 この「Access Analyzer」を利用する事でAWSサービスのアクセス権限を一覧で確認できるようになりました。また、検知されている一覧から変更ページへ一気に遷移することができるので、リソースの管理が容易になりました。 まだ、各リージョンで有効化する必要がある等の不便な点はありますが、手動で管理していた部分がだいぶ楽になると思いますので、ぜひ活用していきたいサービスなので、みなさんにもおススメしたいです。
補足:すべてのリージョンでIAM Access Analyzerを一発で有効化してみた
Access Analyzerは各リージョンで有効化が必要なサービスであるとお伝えしましたが、1つずつ有効化していく事は大変ですよね。そこで、すべてのリージョンで一発有効化することを試したブログを 吉井亮さんが書いていますので、こちらも合わせて読んでもらえると嬉しいです。